# test02_gen.py
# 需求：通过生成器完成以下功能
# - 使用函数实现生成器   yield
# - 函数接受一个文件对象作为参数(读文件  /etc/passwd)
# - 生成器函数每次返回文件的 10 行数据
# 程序 = 数据结构 [] + 算法(open, for, yield)
def gen_file(fobj):  # fr = open("/etc/passwd", mode="r")
    list_line = []  # 每次存储10行记录
    for item in fobj.readlines():  # item: 表示每一行记录
        list_line.append(item)
        if len(list_line) == 10:
            yield list_line  # 每次返回文件的 10 行数据
            list_line.clear()  # 清空列表
    # 对于不足10行的数据，再次进行弹出
    if len(list_line) != 0:  # != 不等于
        yield list_line
if __name__ == '__main__':
    with open("/etc/passwd", mode="r") as fr:
        # gen是生成器对象,需要用for循环获取数据
        gen = gen_file(fr)  # fobj = fr
        for item in gen:
            print(item)



# 23
# list_line = [1,2,3,4,5,6,7,8,9,10]
# list_line.clear()
# list_line = [11 12 13 14......20]
# list_line: []
# list_line: [21 22 23]

